|
ETag(エンティティタグ)は、HTTPにおけるレスポンスヘッダの1つである。これは、HTTPにおけるキャッシュの有効性確認の手段の1つであり、ETagを利用してクライアントから条件付きのリクエストを行うことができる。そうすることで、コンテンツが変わらなければレスポンスをすべて返す必要がなくなるので、キャッシュを効率化し、回線帯域を節約できるようになる。ETagは複数人が同時にリソースを上書きしてしまうことへの対策となる、楽観的並行性制御に使うこともできる。 ETagはあるURLから得られる、ある特定のバージョンのリソースに対する、明確でない識別子である。そのURLにあるリソースに何かしらの変化があれば、ETagも新しい値となる。このように設定されたETagは、一種のフィンガープリントとなり、2つのリソースが同じかどうかを容易に判定できるようになる。あるETagは特定のURLに対してのみ意味を持つものであり、他のURLから得られたリソースのETagと比較しても何ら有意な結果は得られない。 == 使用例 == 典型的な場合、ETag値はWebサーバがレスポンスを送信するときに、リソースとセットとなるHTTPヘッダのETagフィールドに、以下のような形でセットされる。 ETag: "686897696a7c876b7e" クライアントがこのリソースをETagとともにキャッシュしたとすると、後で同じURLへリクエストを行う場合に、先ほど受け取ったETag値をIf-None-Matchに入れてリクエストを行う。 If-None-Match: "686897696a7c876b7e" このリクエストを受け取ると、サーバはリソースのETag値と送られてきたETag値の比較を行う。もしETag値が一致すれば、リソースは変わっていないということになるので、サーバは304 Not Modifiedという、リソース本体を含まないレスポンスを返す。この304というステータスコードのレスポンスは、キャッシュはまだ最新のものなのでそれを使うべきだということを表している。 一方、ETagが一致しなければ、If-None-Matchのないリクエストと同様、リソースを含んだレスポンスを返すこととなる。 また、If-Rangeという、範囲リクエストとETagの確認を同時に行うためのフィールドも存在する〔上野(2013)、pp.135-136。〕。 ETagは、Webページの更新監視にも使うことができる。ただ、WebページにETagを設定していないサイトについては、ETagだけをチェックするという効率的な手法は使えず、ドキュメントすべてをダウンロードして比較するという、サーバ側・クライアント側ともに負荷のかかる手法を使うほかない。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「HTTP ETag」の詳細全文を読む スポンサード リンク
|